package com.yanfan.iot.mapper;

import com.yanfan.iot.domain.Firmware;
import com.yanfan.iot.domain.vo.CommonVo;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 产品固件Mapper接口
 *
 * @author kerwincui
 * @date 2021-12-16
 */
@Repository
public interface FirmwareMapper {
    /**
     * 查询产品固件
     *
     * @param firmwareId 产品固件主键
     * @return 产品固件
     */
    Firmware selectFirmwareByFirmwareId(Long firmwareId);

    /**
     * 查询设备最新固件
     *
     * @param deviceId 产品固件主键
     * @return 产品固件
     */
    Firmware selectLatestFirmware(Long deviceId);

    /**
     * 查询产品固件列表
     *
     * @param firmware 产品固件
     * @return 产品固件集合
     */
    List<Firmware> selectFirmwareList(Firmware firmware);

    /**
     * 新增产品固件
     *
     * @param firmware 产品固件
     * @return 结果
     */
    int insertFirmware(Firmware firmware);

    /**
     * 修改产品固件
     *
     * @param firmware 产品固件
     * @return 结果
     */
    int updateFirmware(Firmware firmware);

    /**
     * 删除产品固件
     *
     * @param firmwareId 产品固件主键
     * @return 结果
     */
    int deleteFirmwareByFirmwareId(Long firmwareId);

    /**
     * 批量删除产品固件
     *
     * @param firmwareIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteFirmwareByFirmwareIds(Long[] firmwareIds);

    /**
     * 排除此固件id，其他设置为非最新版本
     *
     * @param firmware
     * @return
     */
    int updateOrtherFirmwareIsLast(Firmware firmware);

    /**
     * 查询待升级固件版本列表
     *
     * @param firmware
     * @return
     */
    List<Firmware> selectUpGradeVersionList(Firmware firmware);


    /**
     * 查询仪表盘数据
     *
     * @return
     */
    CommonVo selectDashboardInfo();
}
